package cn.com.shopec.erp.stock.service;

import java.util.List;

import cn.com.shopec.erp.common.page.PageFinder;
import cn.com.shopec.erp.common.page.PageQuery;
import cn.com.shopec.erp.stock.entity.StockInProduct;
import cn.com.shopec.erp.stock.vo.StockInProductVo;
import cn.com.shopec.erp.stock.vo.StockInVo;

/**
 * @ClassName: IStockInService
 * @Description: 入库service接口
 * @author: zengxuezhou
 * @date: 2016年11月28日 下午2:29:35
 */
public interface IStockInService {

	/**
	 * 分页查询入库信息
	 * @param stockIn
	 * @param pageQuery
	 * @return
	 */
	PageFinder<StockInVo> queryStockList(StockInVo stockIn, PageQuery pageQuery);
	
	/**
	 * 根据入库编号获取入库信息
	 * @param stockIn
	 * @param pageQuery
	 * @return
	 */
	StockInVo getStockByNo(String stockInNo);
	
	/**
	 * 分页查询入库商品信息
	 * @param stockIn
	 * @param pageQuery
	 * @return
	 */
	PageFinder<StockInProductVo> queryStockProductList(StockInVo stockIn, PageQuery pageQuery);


	/**
	 * 添加入库信息(商品调拨用)
	 * @param stockIn
	 * @return
	 * @throws Exception 
	 */
	boolean addStockInForTransfer(StockInVo stockIn, List<StockInProduct> stockInProducts) throws Exception;
	
	/**
	 * 根据供应商分批加入库信息
	 * @param stockInVo
	 * @param stockInProductVos
	 * @return
	 * @throws Exception
	 */
	boolean addStockIns(StockInVo stockInVo, List<StockInProductVo> stockInProductVos) throws Exception;

	
	/**
	 * 根据入库编号删除入库信息(包括其下的所有商品信息)
	 * @param stockInNo
	 * @return
	 * @throws Exception 
	 */
	boolean deleteStockIn(String stockInNo) throws Exception;


	/**
	 * 根据id删除入库商品信息
	 * @param stockInNo
	 * @return
	 * @throws Exception 
	 */
	boolean deleteStockInProduct(String id) throws Exception;

	/**
	 * 入库审核
	 * @param stockInProducts 
	 * @param stockInNo
	 * @return
	 * @throws Exception 
	 */
	boolean approveStockIn(StockInVo stockInVo, List<StockInProductVo> stockInProducts) throws Exception;

	/**
	 * 入库审核（调拨用）
	 * @param stockInVo
	 * @param stockInProducts
	 * @return
	 * @throws Exception
	 */
	boolean approveStockInForTransfer(StockInVo stockInVo, List<StockInProductVo> stockInProducts) throws Exception;

	/**
	 * 不分页查询入库商品信息
	 * @param stockIn
	 * @return
	 */
	List<StockInVo> queryStockListByFinder(StockInVo stockIn);






}
